var SyncBase = new Ext.extend(Ext.Panel, {
	border : false,
	layout : 'fit',
	initComponent : function() {
		this.initGrid();
		this.items = [this.grid];
		SyncBase.superclass.initComponent.call(this);
	},
	addOrUpdate : function(isAdd) {
		var me = this;
		if (this.win) {
			this.win.close();
		}
		var rec = this.grid.getRecord();
		if (!isAdd) {
			if (!rec) {
				TopMy.alert('请选择要修改的记录！');
				return;
			}
		}
		this.form = new TopExt.FormPanel({
			border : false,
			autoScroll : true,
			padding : 5,
			defaults : {
				xtype : 'textfield',
				anchor : '100%'
			},
			labelWidth : 70,
			labelAlign : 'right',
			items : [{
						xtype : 'hidden',
						name : 'id'
					}, {
						name : 'tablename',
						fieldLabel : '表&emsp;&emsp;名',
						allowBlank : false
					}, {
						name : 'chinesename',
						fieldLabel : '中&ensp;文&ensp;名',
						allowBlank : false
					}, {
						xtype : 'combo',
						fieldLabel : 'DB_LINK',
						name : 'dblink',
						hiddenName : 'dblink',
						triggerAction : 'all',
						mode : 'local',
						allowBlank : false,
						editable : false,
						store : new Ext.data.JsonStore({
							fields : ['db_link', {
										name : 'display',
										mapping : 'owner',
										convert : function(v, r) {
											return v + '.' + r.db_link;
										}
									}],
							url : My.url('/system/common/queryBySql.do'),
							baseParams : {
								sql : "select owner,substr(db_link,0,INSTR(db_link,'.',1,1)-1) db_link from dba_db_links"
							},
							root : 'data',
							autoLoad : true
						}),
						displayField : 'display',
						valueField : 'db_link'
					}],
			listeners : {
				afterrender : function(t) {
					if (!isAdd) {
						t.getForm().loadRecord(rec);
					}
				}
			}
		});
		this.win = new TopExt.Window({
			title : isAdd ? '新增基础表信息' : '更新基础表信息',
			width : 380,
			autoHeight : true,
			modal : true,
			items : [this.form],
			buttons : [{
						text : '保存',
						iconCls : 'icon-save',
						handler : function() {
							var url = My
									.url('/system/database/syncbase/add.do');
							if (!isAdd) {
								url = My
										.url('/system/database/syncbase/update.do');
							}
							TopMy.submit(me.form, {
										url : url,
										successCallback : function() {
											me.win.close();
											me.grid.getStore().reload();
										}
									});
						}
					}, {
						text : '取消',
						iconCls : 'icon-cancel',
						handler : function() {
							me.win.close();
						}
					}]
		});
		this.win.show();
		return this.form;
	},
	initGrid : function() {
		var me = this;
		var store = new Ext.data.JsonStore({
					fields : ['id', 'tablename', 'chinesename', 'dblink',
							'total', 'sourcetotal'],
					url : My.url('/system/database/syncbase/getList.do'),
					root : 'data',
					autoLoad : true
				});
		var sm = new Ext.grid.CheckboxSelectionModel();
		this.grid = new Ext.grid.EditorGridPanel({
			region : 'center',
			boxMinWidth : 480,
			loadMask : true,
			getRecord : function() {
				return me.grid.getSelectionModel().getSelected();
			},
			getRecords : function() {
				return me.grid.getSelectionModel().getSelections();
			},
			store : store,
			viewConfig : {},
			sm : sm,
			cm : new Ext.grid.ColumnModel({
						defaults : {},
						columns : [new Ext.grid.RowNumberer(), sm, {
									dataIndex : 'tablename',
									header : '表名',
									width : 300
								}, {
									dataIndex : 'chinesename',
									header : '中文名',
									width : 320
								}, {
									dataIndex : 'dblink',
									header : 'DBLINK',
									width : 150
								}, {
									dataIndex : 'total',
									header : '本库数据量',
									width : 100,
									renderer : function(v, m, r) {
										var st = r.data.sourcetotal;
										if (v == st) {
											m.attr = 'style="color:green;"';
										} else if (v > st) {
											m.attr = 'style="color:orange;"';
										} else {
											m.attr = 'style="color:red;"';
										}
										return v;
									}
								}, {
									dataIndex : 'sourcetotal',
									header : '源库数据量',
									width : 100,
									renderer : function(v, m, r) {
										return v;
									}
								}]
					}),
			bodyStyle : 'border-left:0;border-bottom:0;',
			tbar : new Ext.Toolbar({
				style : 'border-left:0;border-top:0;',
				items : [{
							text : '新增',
							iconCls : 'icon-add',
							handler : function() {
								me.addOrUpdate(true);
							}
						}, {
							text : '修改',
							iconCls : 'icon-update',
							handler : function() {
								me.addOrUpdate();
							}
						}, {
							text : '删除',
							iconCls : 'icon-delete',
							handler : function() {
								me.dele();
							}
						}, '-', {
							text : '更新数据量',
							iconCls : 'icon-bars',
							handler : function() {
								My.request({
									url : My
											.url('/system/database/syncbase/updateTotal.do'),
									successCallback : function() {
										me.grid.getStore().reload();
									}
								});
							}
						}, '-', {
							text : '同步',
							iconCls : 'icon-sync',
							handler : function() {
								me.sync();
							}
						}]
			}),
			listeners : {
				rowclick : function(g, i, e) {
				}
			}
		});
	},
	dele : function() {
		var me = this;
		var rec = me.grid.getRecord();
		if (!rec) {
			My.alert('请选择要删除的基础表信息 ！');
			return;
		}
		My.confirm('确定要删除该基础表吗？', function(btn) {
					if (btn == 'no') {
						return;
					}
					My.request({
								url : My
										.url('/system/database/syncbase/delete.do'),
								params : {
									id : rec.data.id
								},
								successCallback : function() {
									me.grid.getStore().reload();
								}
							});
				});
	},
	sync : function() {
		var me = this;
		var recs = me.grid.getRecords();
		if (!recs || recs.length == 0) {
			My.alert('请选择要同步的基础表 ！');
			return;
		}
		var tables = [], dblinks = [];
		Ext.each(recs, function(rec) {
					tables.push(rec.data.tablename);
					dblinks.push(rec.data.dblink);
				});
		My.confirm('确定要同步选择的基础表吗？', function(btn) {
					if (btn == 'no') {
						return;
					}
					My.request({
								url : My
										.url('/system/database/syncbase/sync.do'),
								params : {
									tables : tables,
									dblinks : dblinks
								},
								successCallback : function() {
									me.grid.getStore().reload();
								}
							});
				});
	}
});

Ext.onReady(function() {
			new Ext.Viewport({
						layout : 'fit',
						items : [new SyncBase()]
					});
		});